package com.sharing.recommendmodule.controller;

import com.sharing.common.Result;
import com.sharing.domain.User;
import com.sharing.domain.UserProduction;
import com.sharing.recommendmodule.service.RecommendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.jws.soap.SOAPBinding;
import java.rmi.Remote;
import java.util.List;

/**
 * @author MingTian
 * @version 1.0
 * @description TODO 推荐模块实现首页智能作品推荐、各类别兴趣推荐、类似兴趣用户推荐、附近用户推荐等多种推荐功能，用于更好地为用户提供优质服务。
 * @date 2023/6/23 17:17
 */
@RestController
@RequestMapping("/recommend")
public class RecommendController {
    @Autowired
    private RecommendService recommendService;

    /**
     * 对指定用户推荐首页作品（可指定兴趣范围）
     * @param userId
     * @param page
     * @param size
     * @param hobbyIds 若该参数为空，代表依据用户默认兴趣进行推荐（后续可通过定时任务依据用户的浏览行为动态修改用户的兴趣）
     * @return
     */
    @GetMapping("/homePageProduction")
    public Result<List<UserProduction>> recommendHomePageProduction(Integer userId, Integer page, Integer size, @RequestParam List<Integer> hobbyIds) {
        return recommendService.recommendHomePageProduction(userId, page, size, hobbyIds);
    }

    /**
     * 类似兴趣用户推荐
     * @param userId
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/userByProduction")
    public Result<List<User>> recommendUserByProduction(Integer userId, Integer page, Integer size) {
        return recommendService.recommendUserByProduction(userId, page, size);
    }

    /**
     * 附近用户推荐
     * @param userId
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/userByPosition")
    public Result<List<User>> recommendUserByPosition(Integer userId, Integer page, Integer size) {
        return recommendService.recommendUserByPosition(userId, page, size);
    }
}
